多线程学习笔记(非最终版,更新于2020.2.29)

多线程是什么?有什么用?怎么用?

在2020年2月28日,二月的倒数第二天,我闲的学了一下多线程,虽说这玩意没啥用(

由于我也是刚刚才学的,所以这篇文章还在实时更新。

1 简介

在C++11版本中加入了<thread>头文件,此头文件主要声明了std::thread线程类。

2 用法

2.1 简单的例子

举一个特别简单的例子:

#include <iostream>
#include <thread>
#include <windows.h>
using namespace std;
 
void f1() 
{
    for (int i = 0; i < 10; ++i)
    {
        cout << "thread_1111\n";
        sleep(1);
    }
}
void f2()
{
    for (int i = 0; i < 20; ++i)
    {
        cout << "thread_2222\n";
        sleep(1);
    }
}
int main()
{
    thread th1(f1);  
    thread th2(f2);
    th1.join();
    th2.join(); 
    cout << "main()"<<endl;
    return 0;
}

是不是很简单?等会!join函数是用来干什么的?

join:调用该函数会阻塞当前线程。阻塞调用者(caller)所在的线程直至被join的std::thread对象标识的线程执行结束。

你:这什么鬼!说人话!!!

我:也就是说,必须将线程join或者detach 等待子线程结束主进程才可以退出!!!

我:学会了吗?

你:等等,你只给我看了代码,可是并不能体现多线程的作用!

我:再给你看个输出。

可以看出,线程1与线程2是交替执行的。

3 参考文献

  1. C++ thread用法总结(整理)